DockerでOracle Javaを実行する
ども、大瀧です。
「30億のデバイスで走る」でおなじみのJavaなわけですが、ライセンスの関係でこれまでDockerでの利用がグレーという状況でした。以下の記事が詳しいです。
一方で、この問題を解決するためにOracle社での取り組みが進み、手元でランタイムをダウンロードしてEULAに同意しつつ、Dockerイメージをビルドする手法がOracleの中の人によって紹介されています。
現在開催中のdockercon 17では、Docker社とOracle社の協調によりDocker Hub(Docker Store経由)でのOracleプロダクトの公開がアナウンスされました。今回はこちらの手順に沿って、Oracle Java SE 8をDockerで実行する手順をご紹介します。
OpenJDKについては、従来からDocker Hubで利用可能です。
動作検証環境
- マシン : Macbook / macOS Sierra
- Docker : バージョン17.03.1-ce
なお、Docker Storeのアカウント(≒Docker Hubアカウント)が必要ですので、あらかじめ登録しておきましょう *1。
1. Docker Storeでの購入(無償)
Docker Storeにアクセスし、「oracle」で検索します。
いくつかのコンテナイメージが検索結果として表示されるので、「Oracle Java 8 SE (Server JRE)」をクリックします *2。
Developer Tierとして$0.00とあるので、費用はかからないようです。画面右側の[Get Content]ボタンをクリックします。
ログイン画面が表示されるので、ユーザー名およびパスワードを入力してログインし、Contact Informationを埋めます。右側のユーザー利用要件のチェックをオンにし、[Get Content]をクリックしてコンテナイメージの購入が完了します。
My Contentのページに遷移するので、「Oracle Java 8 SE (Server JRE)」の項目の[Setup]ボタンをクリックします。
Docker Engineで指定するべきコマンド例が表示されるのでコピーしておきましょう。
2. Docker EngineでのPullとRun
では、手元のDocker EngineでOracle Javaイメージのダウンロードとコンテナ実行を試してみます。 Docker Storeアカウントでのログインを済ませておきましょう。
$ docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: takipone Password: <パスワードを入力> Login Succeeded $
では、Dockerイメージstore/oracle/serverjre:8
のダウンロードと実行を試してみます。
$ docker pull store/oracle/serverjre:8 8: Pulling from store/oracle/serverjre 915686a9e0a3: Pull complete 7f624fa50d1a: Pull complete Digest: sha256:568df4bca1d8cb85938da94e46bcaf2b98fa682fe7046cd980a60aba64ac8668 Status: Downloaded newer image for store/oracle/serverjre:8 $ docker run -ti store/oracle/serverjre:8 java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) $
あっさり動きました。手元で試したときのJavaのバージョンはbuild 1.8.0_131-b11
でした。
ちなみに、docker login
でログインしていないマシンで試すとイメージが見つからないというエラーになりました。
$ docker pull store/oracle/serverjre:8 Pulling repository docker.io/store/oracle/serverjre Error: image store/oracle/serverjre:8 not found $
まとめ
Docker Storeを利用した、Oracle JavaをDocker Engineで動かす手順をご紹介しました。地味〜なところですが、Oracle JavaがDockerで手軽に利用できるのはJava開発に役立つシーンが少なからずあるのでは、と思っています。